In the past, batteries (also known as "dumb" cells) provided an unpredictable source of power, since typically, a user of a device powered by a battery had no reliable advance warning that a battery was about to run out. There was no indication of how much time was left so that a user could save data or locate an alternate power source prior to complete discharge of the battery and shutdown of the system. Some electronic products use system hardware in an attempt to evaluate the battery's state of charge, but without the necessary knowledge of the battery's characteristics and history, the information is not reliable or accurate.
Today, through the development of "smart" or "intelligent" battery packs, batteries have become a reliable source of power by providing information to the host system and eventually the user as to the state of charge as well as a wealth of other information. A so-called "smart battery" is equipped with specialized hardware circuitry and software that provide present state, calculated and predicted data to a host (e.g., portable electronic equipment powered by a smart battery which communicates with the smart battery and uses information provided by the battery) under software control. By adding electronic circuitry inside the battery packs, these smart batteries can report, for example, fuel gauge information (i.e., remaining charge or run time before discharge) as well as provide power management information so that the host can make more efficient use of battery energy and prolong battery life.
Designers of smart battery systems have, for some time, custom designed the protocols and data reported by the smart batteries to the host for each new system or battery type. Realizing that the computer and battery industries would greatly benefit from a standard for smart batteries, an open standard was created called the "Smart Battery System" or "SBS" specifications. These specifications define the interfaces necessary to implement an SBS compliant system and include the SYSTEM MANAGEMENT BUS (SMBUS) specification which defines a 2-wire interface through which a battery can communicate with a charger, a system host or other power-related components; the SMART BATTERY DATA (SBD) specification which defines the data set that is communicated by a smart battery such as remaining capacity, full charge capacity, manufacturing data, current, voltage, temperature, etc.; the SMART BATTERY CHARGER (SBC) specification which defines the data that flows across the SMBus between the smart battery and the charger; the SMBUS BIOS specification which defines a standard BIOS interface to the SMBus; and the SMART BATTERY SELECTOR specification which provides a solution for the implementation of multiple-battery systems (Intel/Duracell SBS Specifications, Rev. 1.0, Feb. 15, 1995, incorporated herein by reference, available on the World Wide Web @ http://www.intel.com/IAL/powermgm/powermgm.html and Internet ftp @ ftp.Intel.com/pub/IAL/power_management).
Within the open standard, the SMBus, a control bus separate from the main system data bus, was created to allow a battery to communicate with the system host and the charger. The System Management Bus (SMBus) specification defines the SMBus as a two-wire bus interface through which simple power-related integrated circuits can communicate with the rest of the system, based on Phillips I.sup.2 C (a proprietary specification authored by Phillips Semiconductor, as referenced in document # 98-8080-575-01, "The I2C-bus and how to use it.", incorporated herein by reference). The bus is designed to provide point-to-point master controlled transactions and to have multi-master capability. The specification allows for multiple devices to attach to the SMBus through standard slave addresses where information is exchanged through a simple index set specific to each device. The specification also defines the communications protocols available for use by devices on the SMBus. A smart battery can, therefore, communicate with the host and a charger via the SMBus. The advantage of this type of communication interface is that a system using the SMBus can pass messages to and from devices on the bus instead of tripping individual control lines, which reduces pin count and ensures expandability.
The SMBus Specification refers to three types of devices which communicate on the bus: a slave, a master and a host. A slave is a device that is receiving or responding to a command. A master is a device that issues commands, generates clocks, and terminates the transfer. A host is a specialized master that provides the main interface to the system's central processing unit. As an example, when a smart battery needs to inform the host (computer) of an alarm condition or to inform the battery charger about its desired charging scheme, the battery acts as a bus master with write function capabilities. On the other hand, when the battery is requested by the host to provide it with information, the battery acts as a bus slave with read and write capabilities.
Because of the numerous requirements of the SBS specifications (e.g., clock speed, device timeouts, clock stretching, command protocols, error signaling, etc.), most smart batteries are unable to comply 100% with such specifications, either because of hardware or software limitations or system design flaws. Accordingly, there is a need in the art for a smart battery system and interface which is capable of complying with the SBS specifications, especially the bus communication requirements of the SMBus specification.